100 HS = 0
110 RESTORE::RANDOMIZE::OPTION BASE 1::CALL LINK("CHSETL")::DISPLAY ERASE ALL
120 DIM TT(4),AC(5),DX(32),TM(4),TR(4)
130 VR=0::VC=0::SL=1::LM=3::I = 0::G = 0::RF = 0::CP = 0::OB = 0::G$ = "0000000000000000"::HM=0::DI=0
140 MF = 0::FR=1::SN=33::PD = 15::OF = 0::OS = 0::TW = 4::BV = 50::BI = 0::TS = 14::TV = 2::DF=0
150 D1 = 7::D2 = 15::D3 = 23::D4 = 30::OC = 3::SC = 32::SR = 24::CB=0
160 QS = 0::DS = 0::IQ = 0
170 FOR I = 1 to 5::READ AC(I)::NEXT I
180 FOR I=1 TO 18::READ G,G$::CALL LINK("CHAR2",G,G$)::NEXT I
190 FOR I=1 TO 24::READ G,G$::CALL CHAR(G,G$)::NEXT I::DISPLAY ERASE ALL
200 CALL COLOR(1,11,1)::CALL LINK("COLOR2",0,7,2,2,11,1,3,11,1,4,11,1,5,11,1)
210 CALL LINK("COLOR2",6,11,1,7,11,1,8,11,1,9,15,2,10,6,1)
220 CALL LINK("COLOR2",11,11,2,15,13,1,16,11,1,17,12,1,18,5,1)
230 CALL LINK("COLOR2",1,11,1,28,9,1)
240 CALL SPRITE(#1,33,14,192,256,#2,38,12,192,256)
250 DISPLAY ERASE ALL::GOSUB 650
260 GOSUB 2070
270 CALL MAGNIFY(1)::FR = 0::FU=0::WC = 0::S = 0::GOSUB 790
280 CALL LOCATE(#1,120,1)::GOSUB 2520
290 GOSUB 2050
300 FR = FR+1::WC = WC +1::S = S + 1::CALL LINK("THAW")::IF S < 2 THEN 330
310 GOSUB 1930
320 CALL LINK("SCPXLF",153,1,7)::S = 0
330 IF WC < TS OR SK = 3 THEN 440
340 IF CC > D4 THEN 430
350 XT = 4::XC = 32::XB = 153::GOSUB 1110
360 IF CC > D3 THEN 430
370 XT = 3::XC = 24::XB = 24::GOSUB 1110
380 IF CC > D2 THEN 430
390 XT = 2::XC = 16::GOSUB 1110
400 IF SL = 1 THEN 430
410 IF CC > D1 THEN 430
420 XT = 1::XC = 8::GOSUB 1110
430 WC = 0
440 CALL JOYST(1,JC,JR)::VR=VR-JR+1::VC=4::IF VR<13 THEN 460
450 VR=12::GOTO 480
460 IF VR> -13 THEN 480
470 VR=-12
480 CALL LOCATE(#2,192,256)::CALL MOTION(#1,VR,VC)::VS=(ABS(VR)+22)*100::CALL SOUND(30,VS,20)
490 CALL LINK("FREEZE")::CALL POSITION(#1,PR,PC)::IF PR>8 THEN 510::GOSUB 1340
500 GOTO 270
510 IF PR<177 THEN 530::GOSUB 1340
520 GOTO 270
530 IF PR>176 OR PR<9 THEN 270
540 CC=INT((PC+4)/8)+1::CR=INT((PR+4)/8)+1::CALL GCHAR(CR,CC+1,C)::CALL GCHAR(CR,CC,C2)
550 IF C2<>25 THEN 570
560 C = 25
570 CALL VCHAR(CR,CC,152)::QS = QS +2*SM::GOSUB 2550
580 IF C=24 THEN 610::GOSUB 1340
590 IF RF = 0 THEN 610
600 CALL LOCATE(#1,192,256)::CALL LOCATE(#3,192,256)::GOSUB 4180
610 IF C<>24 THEN 270
620 IF JR<>4 THEN 300
630 CALL POSITION(#1,PR,PC)::CALL LOCATE(#2,PR+8,PC)::CALL SOUND(-200,-5,10)::FU=FU+1
640 GOTO 300
650 CALL MAGNIFY(3)::CALL LINK("SCRN2")::DISPLAY ERASE ALL::CALL LINK("SCREEN",2)
660 CALL LINK("COLOR2",0,5,2,11,5,2)::CALL HCHAR(4,4,25,26)::CALL HCHAR(11,4,25,26)
670 CALL HCHAR(22,4,25,26)::CALL VCHAR(4,3,25,19)::CALL VCHAR(12,9,25,4)::CALL VCHAR(12,16,25,2)
680 CALL VCHAR(12,23,25,6)::CALL VCHAR(19,9,25,3)::CALL VCHAR(17,16,25,5)::CALL VCHAR(21,23,25,1)
690 CALL SPRITE(#1,120,14,121,89,#6,104,6,137,193,#7,68,12,9,17,#8,68,12,9,217,#17,112,12,177,241))
700 DISPLAY AT(6,3):"SPARKDRUMMER'S CHALLENGE"::DISPLAY AT(9,6):"RESCUE AT ATARIAGE"::CALL VCHAR(4,29,25,19)
710 FOR I = 248 TO 252::CALL VCHAR(2,I-234,I,1)::NEXT I::FR = 0
720 DISPLAY AT(24,5):"JOYSTICK UP TO PLAY"::CALL LINK("DELAY",1000)
730 CALL JOYST(1,JC,JR)::FR = FR + 1
740 IF FR < 5 THEN 760
750 GOSUB 1990
760 IF JR<4 THEN 730
770 CALL LOCATE(#1,192,256)::CALL DELSPRITE(#6,#7,#8,#17)::CALL MAGNIFY(1)::FR = 1
780 RETURN
790 FC = AC(SL)::CALL LINK("COLOR2", 0, FC, 2 )::DISPLAY ERASE ALL::CALL LINK("SCREEN", 2)
800 CALL HCHAR(1,1,24,768)::CALL HCHAR(23,1,25,32)::CALL VCHAR(17,1,25,7)::CALL HCHAR(24,1,28,LM-1)
810 CALL HCHAR(1,1,25,32)::CALL VCHAR(2,1,25,11)::GOSUB 2550
820 IF CB=1 THEN 880
830 FOR I = 1 TO 4::TT(I)=INT(RND*18)+2::TR(I) = TT(I)
840 IF TR(I) < 12 THEN 860
850 TM(I) = 1::GOTO 870
860 TM(I) = -1
870 NEXT I
880 CB=0
890 IF SL <3 OR SK >1 THEN 910
900 TW = 3
910 CALL VCHAR(2,8,25,22)::CALL VCHAR(2,16,25,22)::CALL VCHAR(2,24,25,22)::CALL VCHAR(2,32,25,22)
920 CALL VCHAR(TT(1),8,24,TW)::CALL VCHAR(TT(2),16,24,TW)::CALL VCHAR(TT(3),24,24,TW)
930 CALL VCHAR(TT(4),32,24,TW)::CALL VCHAR(TT(4),32,153,TW)::VR=0::VC=0
940 CALL LOCATE(#1,120,1)::CALL LINK("VREAD",352,96, M$)
950 IF CP = 0 THEN 980
960 DISPLAY AT(12,9):"PENALTY MAZE"::GOSUB 2550
970 GOTO 1080
980 IF SL>1 THEN 1000
990 M2$ = " LEVEL I"::GOTO 1070
1000 IF SL>2 THEN 1020
1010 M2$ = " LEVEL II"::GOTO 1070
1020 IF SL>3 THEN 1040
1030 M2$ = " LEVEL III"::GOTO 1070
1040 IF SL>4 THEN 1060
1050 M2$ = " LEVEL IV"::GOTO 1070
1060 M2$ = "FINAL LEVEL"
1070 DISPLAY AT(12,10)SIZE(11):M2$
1080 DISPLAY AT(14,5):"JOYSTICK UP TO BEGIN"::CP = 0::GOSUB 2050
1090 CALL LINK("DELAY", 2000)::CALL LINK("VWRITE",352, M$)
1100 RETURN
1110 IF TM(XT) = -1 THEN 1150
1120 IF TR(XT) < 19 THEN 1140
1130 TM(XT) = -1::GOTO 1180
1140 CALL VCHAR(TR(XT),XC,25)::CALL VCHAR(TR(XT)+TW,XC,XB)::TR(XT) = TR(XT)+1::GOTO 1180
1150 IF TR(XT) > 2 THEN 1170
1160 TM(XT) = 1::GOTO 1180
1170 CALL VCHAR(TR(XT),XC,XB)::CALL VCHAR(TR(XT)+TW,XC,25,1)::TR(XT) = TR(XT)-1
1180 QS=QS+10*SM::GOSUB 2550
1190 RETURN
1200 CALL COLOR(#1,11)::CB=1::CALL LINK("CHAR2",25,"C3C324181824C3C3")::CALL MOTION(#1,0,0)::CALL LINK("THAW")
1210 FOR I=33 TO 37::CALL MOTION(#1,(120-PR)*49/100, (1-PC)*49/100)
1220 K = I*10::CALL PATTERN(#1,I)::CALL SOUND(40,-8,0,110,5,698,10,K,0)::CALL LINK("FREEZE")
1230 CALL POSITION(#1,PR,PC)::CALL LINK("THAW")::NEXT I::CALL LINK("FREEZE")
1240 CALL DISTANCE(#1,120,1,I)::IF I > 64 THEN 1210
1250 CALL MOTION(#1,0,0)::CALL LINK("FREEZE")::CALL LOCATE(#1,120,1)::CALL PATTERN(#1,33)::CALL LINK("CHAR2",25,"7EA5C38181C3A57E")
1260 FU = 0::T = 0::LM=LM-1::IF LM = 0 Then 4940
1270 CALL COLOR(#1,14)::RF=0
1280 FOR I = 1 to 4::TT(I) = TR(I)::IF TR(I) < 12 THEN 1300
1290 TM(I) = 1::GOTO 1310
1300 TM(I) = -1
1310 NEXT I
1320 QS=QS-200*(SM^2)::GOSUB 2550
1330 RETURN
1340 VR=0::VC=0::JR=0::JC=0
1350 IF C=153 THEN 1380
1360 GOSUB 1200
1370 IF LM > 0 THEN 1570::GOTO 4940
1380 RF = 1::CALL LOCATE(#1,192,256)::CALL LINK("VREAD",128, 32, M$)
1390 IF SL>1 THEN 1410
1400 DISPLAY AT(5,12):"LEVEL I"::GOTO 1480
1410 IF SL>2 THEN 1430
1420 DISPLAY AT(5,11):"LEVEL II"::GOTO 1480
1430 IF SL>3 THEN 1450
1440 DISPLAY AT(5,11):"LEVEL III"::GOTO 1480
1450 IF SL>4 THEN 1470
1460 DISPLAY AT(5,11):"LEVEL IV"::GOTO 1480
1470 DISPLAY AT(5,9):"FINAL LEVEL V"
1480 CALL LINK("DELAY",1000)::CALL LINK("VWRITE",128,M$)::DISPLAY AT(5,3):"MAZE NAVIGATION COMPLETE"
1490 QS = QS +200*SM::GOSUB 2550
1500 CALL LINK("DELAY",2000)::CALL LINK("VWRITE",128,M$)::GOSUB 1590
1510 CALL SPRITE(#1,33,14,120,1)::CALL LINK("THAW")
1520 IF MF = 1 THEN 1560
1530 CALL LINK("VREAD",128,32, M$)
1540 DISPLAY AT(5,5):"SPARKDRUMMER SIGHTED"::CALL LINK("DELAY",1000)::CALL LINK("VWRITE",128, M$)
1550 DISPLAY AT(5,3):"INITIATE LAUNCH SEQUENCE"::CALL LINK("DELAY",1000)::CALL LINK("VWRITE",128, M$)
1560 GOSUB 2290
1570 CALL LINK("DELAY",100)
1580 RETURN
1590 DX(1)=17::SR = 1
1600 FOR LC = 2 to 31::FOR LR = 2 TO 22::CALL GCHAR(LR,LC,B)::IF B = 152 THEN 1630
1610 NEXT LR
1620 DX(LC) = DX(LC-1)::GOTO SparkRow
1630 DX(LC) = LR
1640 IF DX(LC) < DX(LC-1)+4 THEN 1660
1650 DX(LC) = DX(LC)-4
1660 IF SR > DX(LC)-1 THEN 1700
1670 IF SR = DX(LC)-1 THEN 1690
1680 SR = DX(LC) - 1::SC = LC::GOTO 1700
1690 SR=DX(LC)-1::SC=LC
1700 NEXT LC
1710 FOR I = 2 TO 31::DX(I) = DX(I)+(21-SR)::NEXT I::SR = SR+(21-SR)::DX(32) = DX(31)
1720 CALL VCHAR(DX(1),1,160,25-DX(1))::CALL VCHAR(1,1,24,DX(1)-1)
1730 FOR LC = 2 TO 31::CALL VCHAR(DX(LC),LC,160,25-DX(LC))::CALL VCHAR(1,LC,24,DX(LC)-1)
1740 IF DX(LC) = 22 THEN 1830
1750 IF DX(LC-1) <= DX(LC) THEN 1780
1760 IF DX(LC+1) > DX(LC) THEN 1810
1770 GOTO 1820
1780 IF DX(LC-1) = DX(LC) AND DX(LC+1) = DX(LC) THEN 1830
1790 IF DX(LC-1) < DX(LC) AND DX(LC+1) < DX(LC) THEN 1830
1800 B = 162::GOTO 1840
1810 B=161::GOTO 1840
1820 B=163::GOTO 1840
1830 B=160::GOTO 1840
1840 CALL HCHAR(DX(LC), LC, B)::IF DX(LC-1) <> DX(LC) OR DX(LC) <> DX(LC+1) THEN 1860
1850 CALL HCHAR(DX(LC)-1,LC,144)
1860 NEXT LC
1870 CALL VCHAR(DX(32),32,160,25-DX(32))::CALL VCHAR(1,32,24,DX(32)-1)
1880 CALL MOTION(#1,0,0)::CALL LOCATE(#1,120,1)
1890 CALL LOCATE(#2,192,256)
1900 CALL HCHAR(SR,SC,24)::SC = SC*8-7::SR=(SR)*8-7::CALL SPRITE(#3,40,15,SR,SC)::GOSUB 1970
1910 GOSUB 2550
1920 RETURN
1930 SN = SN+1::IF SN<38 THEN 1950
1940 SN = 33
1950 CALL PATTERN(#1,SN)
1960 RETURN
1970 FOR I =1 to 5::FOR J=40 to 43::CALL PATTERN(#3,J)::CALL SOUND(80,-8,10,110,10,698,10,I*J*50,10)::NEXT J::NEXT I
1980 CALL PATTERN(#3,40)::RETURN
1990 M$ = "7E8199A5A599837E"::CALL LINK("CHAR2",25,M$)::CALL LINK("DELAY",100)::M$= "7E8181999981817E"
2000 CALL LINK("CHAR2",25,M$)::CALL LINK("DELAY",100)::M$ = "7EA5C38181C3A57E"::CALL LINK("CHAR2",25,M$)::RETURN
2010 CALL KEY(1,KV,SV)::IF SV=0 THEN 2010
2020 RETURN
2030 CALL KEY(0,KX,SX)::IF SX = 0 THEN 2030
2040 RETURN
2050 CALL JOYST(1,JC,JR)::IF JR<4 THEN 2050
2060 RETURN
2070 DISPLAY ERASE ALL::SK = 1
2080 DISPLAY AT(5,6):"SELECT SKILL LEVEL"::DISPLAY AT(9,2):"TURSIAN GRANDMASTER (HARD)"::DISPLAY AT(11,2):"SENIOR FALCONER (MEDIUM)"
2090 DISPLAY AT(13,2):"SINPHALTIMYSTIC (EASY)"::CALL LINK("DELAY",1000)::DISPLAY AT(20,4):"PRESS BUTTON TO BEGIN"
2100 CALL LOCATE(#1,65,8)
2110 CALL JOYST(1,JC,JR)::CALL KEY(1,KX,SX)::GOSUB 1930
2120 IF JR=0 AND SX=0 THEN 2110
2130 IF KX = 18 THEN 2220
2140 IF JR = 4 THEN 2170
2150 IF JR = -4 THEN 2190
2160 IF JR = 0 THEN 2110
2170 SK=SK-1::IF SK > O THEN 2210
2180 SK = 1::GOTO 2110
2190 SK = SK+1::IF SK <4 THEN 2210
2200 SK = 3::GOTO 2110
2210 CALL LOCATE(#1,(7 + (SK*2))*8-7,8)::CALL SOUND(100,1100,0)::CALL LINK("DELAY",100)::GOTO 2110
2220 CALL LOCATE(#1,192,256)::DISPLAY ERASE ALL
2230 IF SK>1 THEN 2250
2240 M$="TURSIAN GRANDMASTER (HARD)"::BV = 50::GOTO 2280
2250 IF SK>2 THEN 2270
2260 M$="SENIOR FALCONER   (MEDIUM)"::BV = 60::GOTO 2280
2270 M$="SINPHALTIMYSTIC     (EASY)"::BV = 80
2280 SM=ABS(SK-4)::DISPLAY AT(12,2):M$::CALL LINK("DELAY",2000)::DISPLAY ERASE ALL::RETURN
2290 FR = 1::BB = 0::OF = 1::HM=0::GOSUB 2580
2300 CALL LOCATE(#3,SR,SC)::CALL LINK("THAW")::CALL MOTION(#1,-8,2)::CALL SOUND(1300,-5,5)
2310 CALL VCHAR(17,1,24,6)
2320 CALL POSITION(#1,PR,PC)
2330 IF PR< 116 THEN 2350
2340 CALL LOCATE(#2,PR+9,PC)::CALL MOTION(#2,-8,2)
2350 GOSUB 1930
2360 FR = FR+1::If PR>70 THEN 2380
2370 CALL LOCATE(#2,192,256)::CALL MOTION(#2,0,0)::BB=1
2380 If PR>16 THEN 2320
2390 CALL LINK("FREEZE")::CALL POSITION(#1,PR,PC)::CALL LOCATE(#1,17,PC)::CALL LINK("THAW")
2400 CALL LOCATE(#2,192,256)::CALL MOTION(#1,0,8)::CALL PATTERN(#1,39)
2410 IF MF = 1 THEN 2460
2420 CALL LINK("VREAD",128,32,M$)::DISPLAY AT(5,7):"ORBIT ESTABLISHED"::CALL LINK("DELAY",1000)::CALL LINK("VWRITE",128,M$)
2430 CALL LINK("VREAD",128,32,M$)::DISPLAY AT(5,4):"VAST MOJO READINGS LOW"
2440 CALL LINK("DELAY",1500)::DISPLAY AT(5,1):"MANEUVER UP TO COLLECT MOJO"
2450 CALL LINK("DELAY",1500)::DISPLAY AT(5,1):"JOYSTICK BUTTON = AIRBRAKE "::CALL LINK("DELAY",1500)::CALL LINK("VWRITE",128,M$)
2460 CALL JOYST(1,JC,JR)::IF JR=4 THEN 2500
2470 I = I +1::IF I < 20 OR SK = 3 THEN 2460
2480 QS = QS - 1::I=0::GOSUB 2550
2490 GOTO 2460
2500 CALL MOTION(#1,0,0)::MF = 1::GOTO 2870
2510 RETURN
2520 CALL LINK("VREAD",128,32,M$)::DISPLAY AT(5,11)SIZE(9):"GET READY"
2530 CALL LINK("DELAY",2000)::CALL LINK("VWRITE",128,M$)
2540 RETURN
2550 IF QS > 0 THEN 2570
2560 QS = 0
2570 DISPLAY AT(24,23) SIZE(6):QS::RETURN
2580 CALL LINK("VREAD",0,192,T1$,192,192,T2$,384,192,T3$,576,192,T4$)::CALL POSITION(#3,SR,SC)::CALL LOCATE(#3,192,256)
2590 RETURN
2600 CALL LINK("VWRITE",0,T1$,192,T2$,384,T3$,576,T4$)::CALL LOCATE(#3,SR,SC)
2610 RETURN
2620 DR = 9::VC = 8::CALL HCHAR(1,1,24,768)
2630 CALL HCHAR(1,1,25,32)::CALL HCHAR(22,1,25,4)::CALL HCHAR(22,29,25,4)::CALL HCHAR(23,1,25,9)
2640 CALL HCHAR(4,1,25,3)::CALL HCHAR(4,29,25,4)::CALL VCHAR(7,1,25,13)::CALL VCHAR(7,32,25,13)
2650 CALL HCHAR(19,2,25,3)::CALL HCHAR(19,29,25,3)::CALL HCHAR(7,2,25,3)::CALL HCHAR(23,24,25,9)
2660 CALL HCHAR(7,29,25,3)::CALL HCHAR(9,11,25,12)
2670 CALL VCHAR(2,4,25,3)::CALL VCHAR(2,29,25,3)
2680 RETURN
2690 GOSUB 2620
2700 CALL VCHAR(9,10,25,6)::CALL VCHAR(9,23,25,6)::CALL HCHAR(14,11,25,12)
2710 IF SK >2 THEN 2730
2720 CALL VCHAR(8,4,25,11)::CALL VCHAR(8,29,25,11)
2730 RETURN
2740 GOSUB 2690
2750 IF SK > 2 THEN 2770
2760 CALL HCHAR(3,5,25,24)
2770 RETURN
2780 GOSUB 2740
2790 IF SK >1 THEN 2810
2800 CALL HCHAR(15,13,25,8)
2810 RETURN
2820 GOSUB 2780
2830 IF SK>1 THEN 2850
2840 CALL HCHAR(11,24,25,5)
2850 RETURN
2860 RETURN
2870 CALL MOTION(#1,0,0)::CALL LOCATE(#1,192,256)::GOSUB 2580
2880 IF SL >1 THEN 2910
2890 GOSUB 2620
2900 GOTO 3010
2910 IF SL>2 THEN 2940
2920 GOSUB 2690
2930 GOTO 3010
2940 IF SL>3 THEN 2970
2950 GOSUB 2740
2960 GOTO 3010
2970 IF SL>4 THEN 3000
2980 GOSUB 2780
2990 GOTO 3010
3000 GOSUB 2820
3010 FR = 0::FU =0::S = 0::OB = 0::I=0::GOSUB 2550
3020 IF SL > 1 OR MF = 1 THEN 3050
3030 CALL LINK("VREAD",352,32,M$)::DISPLAY AT(12,5)SIZE(22):"TIP: BUTTON = AIRBRAKE"::CALL LINK("DELAY",2000)
3040 CALL LINK("VWRITE",352,M$)
3050 MF = 1::CALL LINK("DELAY",1000)::VR=-4::VC = 0
3060 CALL MAGNIFY(3)::CALL LOCATE(#1,192,256)::CALL LINK("FREEZE")
3070 CALL SPRITE(#5,120,14,160,128,#10,104,6,152,1,0,10,#6,140,12,192,256,#9,128,1,152,1,0,10)
3080 CALL SPRITE(#8,136,1,152,1,0,10)::CALL SPRITE(#7,68,12,33,240,0,-6)::CALL LINK("THAW")
3090 FR = FR+1::S = S + 1::IQ=IQ+1::CALL LINK("THAW")::IF S < 2 THEN 3110
3100 CALL LINK("SCPXUP",154,1,7)::S = 0
3110 CALL JOYST(1,JC,JR)::CALL KEY(1,KX,SX)
3120 IF KX <> 18 THEN 3140
3130 VR=VR/2::VC = VC/2::GOTO 3240
3140 IF JC = 0 AND JR = 0 THEN 3240
3150 VR=VR + 1- JR::VC=VC+INT(JC/2)
3160 IF VR<9 THEN 3180
3170 VR=8
3180 IF VR> -14 THEN 3200
3190 VR=-13
3200 IF VC<9 THEN 3220
3210 VC=8
3220 IF VC>-9 THEN 3240
3230 VC = -8
3240 CALL LINK("FREEZE")::CALL MOTION(#5,VR,VC)::IF HM=0 THEN 3260
3250 CALL MOTION(#7,VR,VC)
3260 CALL LINK("THAW")::VS=(ABS(VR)+22)*10::CALL SOUND(10,VS,25)
3270 IF JR <> 4 THEN 3360
3280 CALL LINK("FREEZE")::CALL POSITION(#5,PR,PC)
3290 CALL LOCATE(#6,PR,PC)::CALL MOTION(#6,VR,VC)::CALL LINK("THAW")::CALL SOUND(-200,-5,10)
3300 CALL MOTION(#6,0,0)::CALL LINK("DELAY", 50)::CALL LOCATE(#6,192,256)::FU = FU + 1
3310 IF FU <> 5 THEN 3360
3320 CALL COLOR(#9,15, #8,10)
3330 CALL SOUND(50,131,5,132,6,133,7)::CALL SOUND(25,147,5,148,6,149,7)::CALL SOUND(37,156,5,157,6,158,7)
3340 CALL SOUND(50,131,5,132,6,133,7)::FOR FI=1 TO 4::CALL SOUND(8,185,5,186,6)::CALL SOUND(8,175,5,176,6)::NEXT FI
3350 CALL SOUND(-25,185,5,186,6,187,7)
3360 IF PR>8 THEN 3400
3370 CALL SPRITE(#7,68,12,81,128)
3380 GOSUB 4090
3390 GOTO 270
3400 CALL POSITION(#5,PR,PC)::IF PR<184 THEN 3440
3410 CALL LINK("FREEZE")::CALL DELSPRITE(#5,#6,#8,#9,#10)
3420 IF HM = 1 THEN GOSUB 4180
3430 CALL DELSPRITE(#7)::GOSUB 4180
3440 CC=INT((PC+4)/8)+1::CR=INT((PR+4)/8)+1::CALL LINK("FREEZE")::IF CR >24 THEN 4180
3450 IF CC <33 THEN 3470
3460 CC = 1
3470 CALL GCHAR(CR,CC,C)::IF CR = 24 THEN 3490
3480 CALL GCHAR(CR+1,CC,C2)::CALL LINK("THAW")
3490 If C = 24 AND C2 = 24 THEN 3530
3500 IF C=154 OR C2 = 154 THEN 4180
3510 GOSUB 4090
3520 HM=0::OS=0::GOTO 270
3530 IF HM = 1 THEN 3590
3540 CALL COINC(#5,#7,8,C7)::IF C7 = 0 THEN 3590
3550 CALL LINK("FREEZE")
3560 CALL POSITION (#5,PR,PC)::CALL LOCATE(#7,PR,PC)::CALL PATTERN(#7,124)::CALL MOTION(#7,VR,VC)::HM=1
3570 CALL HCHAR(24,1,25,32)::CALL HCHAR(24,11,154,10)::SY = PR::SX=PC
3580 GOTO 3090
3590 CALL COINC(#5,#10,8,C6)::IF C6 = 0 THEN 3740
3600 IF OS = 1 THEN 3090
3610 CALL LINK("FREEZE")::CALL LINK("VREAD",192,32,M$)
3620 IF HM=1 THEN 3650
3630 CALL POSITION(#10,PR,PC)::CALL LOCATE(#5,PR+16,PC+5)
3640 DISPLAY AT(7,3)SIZE(24):"YOU'RE YESTERDAY'S NEWS!"::CALL LINK("DELAY",2000)::OS = 1::GOTO 3670
3650 DISPLAY AT(7,6):"THAT'S OMEGA'S MOJO!"::OS = 1::HM=0
3660 CALL POSITION(#10,PR,PC)::CALL PATTERN(#7,68)::CALL LOCATE(#7,PR+16,PC)::CALL LINK("DELAY",2000)
3670 CALL SOUND(500,131,5,132,6,133,7)::CALL SOUND(250,147,5,148,6,149,7)::CALL SOUND(375,156,5,157,6,158,7)
3680 CALL SOUND(500,131,5,132,6,133,7)::FOR FI=1 TO 4::CALL SOUND(75,185,5,186,6)::CALL SOUND(75,175,5,176,6)::NEXT FI
3690 CALL SOUND(-250,185,5,186,6,187,7)::CALL LINK("VWRITE",192,M$)
3700 QS = QS-200*(SM^2)::GOSUB 2550
3710 LM=LM-1::HM=0::OS=0::OB = 0::CALL DELSPRITE(#5,#6,#7,#8,#9,#10)::DISPLAY ERASE ALL
3720 IF LM = 0 THEN 4940
3730 GOTO 270
3740 IF HM = 0 OR OB >11 THEN 3890
3750 IF OB = 10 THEN 3920
3760 BI = BI +1::IF BI < BV THEN GOTO 3090
3770 BI = 0
3780 CALL LINK("FREEZE")::CALL MOTION(#5,VR/2,VC/2,#7,VR/2,VC/2)::VR = 0::VC = 0
3790 OB = OB +1::BC = (OB + 10)*8 - 7::CALL POSITION(#10,PR,PC)::PR=PR+16::PC = PC +4::IF PC < 257 THEN 3810
3800 PC = 256
3810 CALL SPRITE(#4,132,FC,PR,PC,(185-PR)*49/100,(BC-PC)*49/100)::CALL LINK("THAW")
3820 For I = 1 TO 2::CALL SOUND(100,880,5,890,6)::CALL SOUND(100,880,10,660,11)::CALL SOUND(100,670,16,660,15)::NEXT I
3830 CALL MOTION(#4,0,0)::CALL LINK("FREEZE")::OX=PC::OY=PR::CALL POSITION(#4,PR,PC)::CALL LINK("THAW")
3840 CALL DELSPRITE (#4)::CALL MOTION(#5,VR,VC,#7,VR,VC)::CALL VCHAR(24,10+OB,25)::QS = QS - 10*(SM^2)
3850 GOSUB 2550
3860 IF SX < OX THEN 3880
3870 CALL MOTION(#8,0,8,#9,0,8,#10,0,8)::GOTO 3090
3880 CALL MOTION(#8,0,-8,#9,0,-8,#10,0,-8)::GOTO 3090
3890 IF IQ < SK*50 OR SK = 3 THEN 3090
3900 PC = INT(RND*30)-14::CALL MOTION(#7,0,PC)::IQ=0::GOTO 3090
3910 RETURN
3920 VR = INT(VR/3)::VC = INT(VC/3)::CALL LINK("FREEZE")::QS = QS - 200*(SM^2)::GOSUB 2550
3930 CALL SOUND(500,131,5,132,6,133,7)::CALL SOUND(250,147,5,148,6,149,7)::CALL SOUND(375,156,5,157,6,158,7)
3940 CALL SOUND(500,131,5,132,6,133,7)
3950 FOR FI=1 TO 4::CALL SOUND(75,185,5,186,6)::CALL SOUND(75,175,5,176,6)::NEXT FI::CALL SOUND(-250,185,5,186,6,187,7)
3960 CALL MOTION(#5,0,0)::CALL POSITION(#5,DR,DC)::GR = INT((DR+7)/8)::GC = INT((DC+7)/8)::IF GR <23 THEN 3980
3970 GR = 23
3980 CALL POSITION(#10,PR,PC)::PR=PR+16::PC = PC +4::IF PC <257 THEN 4000
3990 PC = 256
4000 CALL SPRITE(#4,108,FC,PR,PC,(DR-PR)*49/100,(DC-PC)*49/100)::CALL LINK("THAW")
4010 CALL SOUND(100,880,5,890,6)::CALL SOUND(100,880,10,660,11)::CALL SOUND(100,670,16,660,15)
4020 CALL MOTION(#4,0,0)::CALL DELSPRITE(#7)::DR=DR-1::DC=DC-2::CALL LOCATE(#4,DR,DC)
4030 FOR I = 1 TO 3::FOR J = 3 TO 16::CALL COLOR(#4,J)::CALL LINK("DELAY",100)::NEXT J
4040 CALL SOUND(100,880,5,890,6)::CALL SOUND(100,880,10,660,11)::CALL SOUND(100,670,16,660,15)::NEXT I
4050 LM=LM - 1::HM=0::OS=0::OB = 0::CALL DELSPRITE(#4, #5,#6,#8,#9,#10)::IF LM > 0 Then 270
4060 LM = 1
4070 GOTO 270
4080 RETURN
4090 CALL DELSPRITE(#6,#7,#8,#9,#10)::CALL MAGNIFY(1)::CALL LINK("CHAR2",25,"FFC3A59999A5C3FF")::QS = QS - 200*(SM^2)
4100 CALL LINK("FREEZE")::CALL POSITION(#5,PR,PC)::CALL LINK("THAW")
4110 FOR I=33 TO 37::CALL MOTION(#5,(192-PR)*49/100, (128-PC)*49/100)::K = I*10::CALL PATTERN(#5,I)
4120 CALL SOUND(40,-8,0,110,5,698,10,K,0)::CALL LINK("FREEZE")::CALL POSITION(#5,PR,PC)::CALL LINK("THAW")::NEXT I
4130 CALL DISTANCE(#5,192,128,I)::IF I > 64 THEN 4110
4140 CALL DELSPRITE(#5)::CALL LINK("CHAR2",25,"7EA5C38181C3A57E")::LM=LM-1::HM=0::OS=0::OB = 0
4150 CALL LINK("DELAY",1000)::IF LM = 0 THEN 4940
4160 CP = 1::GOSUB 2550
4170 RETURN
4180 CALL LINK("FREEZE")::CALL PATTERN(#1,39)::OD = 8::DP=0::FU = 0::FR = 0::OB = 0::MS=0
4190 CALL LOCATE(#1,192,256)::CALL MAGNIFY(1)::CALL DELSPRITE(#5,#6, #8, #9, #10)::GOSUB 2600
4200 IF HM = 0 THEN 4220
4210 CALL PATTERN(#7,72)::CALL LOCATE(#7,17,PC)::CALL MOTION(#7,0,OD)
4220 CALL LOCATE(#1,9,PC)::CALL MOTION(#1,0,OD)::CALL LINK("THAW")::CALL LOCATE(#3,SR,SC)::GOSUB 1970
4230 CALL LINK("DELAY",1000)::IF HM=1 OR MF=1 THEN 4320
4240 CALL LINK("VREAD",128,32,M$)::DISPLAY AT(5,7):"ORBIT ESTABLISHED"::CALL LINK("DELAY",1000)::CALL LINK("VWRITE",128,M$)
4250 DISPLAY AT(5,2):"JOYSTICK UP TO BEGIN SEARCH"
4260 GOSUB 2050
4270 CALL LINK("VWRITE",128,M$)::CALL MOTION(#1,0,0)::IF HM = 1 THEN 4320
4280 GOSUB 2870
4290 IF DI = 1 THEN 4320
4300 CALL LINK("VREAD",128,128,M$)::DI = 1::DISPLAY AT(5,7):"MOJO READY FOR DROP"::CALL LINK("DELAY",1000)
4310 DISPLAY AT(5,4):"JOYSTICK BUTTON DROPS MOJO "::CALL LINK("DELAY",2000)::CALL LINK("VWRITE",128, M$)
4320 CALL LINK("THAW")
4330 GOSUB 2550
4340 FR = FR +1::CALL JOYST(1,JC,JR)::IF JR = 4 AND HM = 0 THEN GOSUB 2870
4350 CALL KEY(1,KV,SV)::IF ABS(SV) = 1 AND HM = 1 THEN 4450
4360 IF DP = 1 THEN 4450
4370 IF SV = 0 THEN 4390
4380 CALL SOUND (50,210,1)
4390 IF JC = 0 THEN 4320
4400 IF JC = 4 THEN 4420
4410 IF JC = -4 THEN 4430
4420 OD = 8::FU=FU+1::GOTO 4440
4430 OD = -8::FU=FU+1
4440 CALL LINK("FREEZE")::CALL MOTION(#1,0,OD,#7,0,OD)::GOTO 4320
4450 CALL JOYST(1,JC,JR)::IF JC = 0 THEN 4470
4460 OD = JC::FU = FU+5::MS =MS+1::GOSUB 2550
4470 CALL MOTION(#1,0,OD,#7,10,OD)::HM = 0::DP = 1
4480 CALL POSITION(#7,PR,PC)::CC=INT((PC+7)/8)::CR=INT((PR+7)/8)::CALL GCHAR(CR,CC,C3)::CALL SOUND(-50,CR*100,10)
4490 IF SR-PR > 16 THEN 4510
4500 IF ABS(PC-SC+4) < 12-SK THEN 4610
4510 IF C3 = 24 OR C3 = 152 THEN 4450
4520 DF=DF+1::CALL MOTION(#1,0,OD,#7,0,0)::QS = QS - 100*(SM*2)::GOSUB 2550
4530 FOR I = 1 TO 3
4540 CALL SOUND(100,1760,5,1770,6,1765,4)::CALL SOUND(200,880,3,890,4,885,5)::CALL SOUND(400,110,1,115,2,120,3)::NEXT I
4550 CALL DELSPRITE(#7)
4560 FOR I = 1 TO 3::CALL LINK("VREAD",128,32,M$)
4570 DISPLAY AT(5,7):"MOJO DROP FAILURE"::CALL LINK("DELAY",500)::CALL SOUND(200,660,10)
4580 CALL LINK("VWRITE",128, M$)::CALL LINK("DELAY", 200)::NEXT I
4590 FU = 0::FR = 0::DP = 0::DISPLAY AT(5,5):"JOYSTICK UP FIND MOJO"::GOSUB 2050
4600 CALL LINK("VWRITE",128,M$)::CALL MOTION(#1,0,0)::MF = 1::GOTO 2870
4610 CALL MOTION(#1,0,0)::CALL LOCATE(#1,9,SC)
4620 CALL SPRITE(#7,72,11,SR-8,SC,1,0)::CALL LINK("DELAY",2000)
4630 FOR I = 1 to 3::CALL SOUND(100,880,10,890,11)::CALL SOUND(200,440,4,450,5)::NEXT I::CALL DELSPRITE(#7)
4640 CALL COLOR(#3,11)
4650 CALL PATTERN(#3,44)::CALL MOTION(#3,-15,0)::CALL LINK("DELAY",500*SL)::CALL MOTION(#3,0,0)
4660 CALL PATTERN(#3,45)::IF SL = 5 THEN 4820
4670 CALL MOTION(#3,15,0)::CALL LINK("DELAY",500*SL)
4680 CALL MOTION(#3,0,0)::CALL POSITION(#3,SR,SC)::CALL PATTERN(#3,44)::CALL COLOR(#3,15)
4690 FOR I = 1 TO 3::CALL LINK("VREAD",128,32,M$)
4700 DISPLAY AT(5,7):"MOJO DROP SUCCESS"::CALL LINK("DELAY",500)::CALL SOUND(100,880,10,890,11)::CALL SOUND(200,440,4,450,5)
4710 CALL LINK("VWRITE",128, M$)::CALL LINK("DELAY", 200)::NEXT I::QS = QS+300*SM+150*SM*LM::GOSUB 2550
4720 LM=LM+1
4730 GOSUB 1970
4740 CALL MOTION(#1,0,0)::CALL LOCATE(#1,192,256)::CALL LOCATE(#3,192,256)::DP = 0
4750 DF = 0::MS = 0
4760 SL=SL+1::IF SL=6 THEN 4820
4770 IF SL = 5 THEN 4800
4780 IF SL <> 4 THEN 270
4790 TS = TS - TV::GOTO 270
4800 TS = TS - TV::GOTO 270
4810 RETURN
4820 CALL LINK("FREEZE")::CALL LOCATE(#1,9,SC,#3,17,SC)::CALL MOTION(#1,0,10,#3,0,10)::CALL LINK("THAW")
4830 DISPLAY AT(5,9):"RENDEZVOUS!"::SL=6::CALL LINK("DELAY", 4250)
4840 CALL DISTANCE(#1,9,256,I)::IF I > 25 THEN 4840
4850 DISPLAY ERASE ALL::CALL HCHAR(24,1,25,32)
4860 CALL DISTANCE(#1,9,128,I)::IF I > 9 THEN 4860
4870 CALL LINK("FREEZE")::CALL POSITION(#1,PR,PC)::CALL LOCATE(#3,PR+8,PC)::CALL MOTION(#1,8,0,#3,8,0)::CALL LINK("THAW")
4880 CALL POSITION(#3,PR,PC)::IF PR < 177 THEN 4880
4890 CALL LINK("FREEZE")::CALL MOTION(#1,-6,0,#3,0,0)::CALL LINK("THAW")
4900 DISPLAY AT(2,5):"SPARKDRUMMER RESCUED!"::CALL LINK("DELAY",4250)::GOSUB 1970
4910 QS = QS + 3000 + LM*200*SM::CALL HCHAR(24,23,25,6)
4920 CALL MOTION(#1,0,4)::GOTO 4960
4930 RETURN
4940 DISPLAY ERASE ALL::CALL DELSPRITE(ALL)::CALL LINK("SCREEN",2)::DISPLAY AT(3,10):"GAME OVER"
4950 IF SL = 6 THEN 4960::DISPLAY AT(6,8):"RESCUE FAILED"
4960 DISPLAY AT(9,9)SIZE(13):"SCORE  " & STR$(QS)
4970 IF HS >= QS THEN 4980::HS = QS
4980 DISPLAY AT(12,7)SIZE(16):"HIGH SCORE " & STR$(HS)
4990 DISPLAY AT(22,2):"UP TO REPLAY, DOWN TO QUIT"::CALL LINK("DELAY", 2000)
5000 CALL JOYST(1,JC,JR)
5010 IF JR = -4 THEN 5090
5020 GOSUB 1930
5030 IF JC <> 4 THEN 5070
5040 DISPLAY AT(15,3):"THANK YOU ATARIAGE 99ERS:"
5050 DISPLAY AT(17,1):"MATTHEW180,SHIFT838,THECODEX"
5060 DISPLAY AT(19,1):"RALPHB,F.G.KAAL,ASMUSR,OMEGA"
5070 IF JR = 0 THEN 5000
5080 CALL DELSPRITE(ALL)::GOTO 110
5090 DISPLAY ERASE ALL::END
5100 RETURN
5110 DATA 8,3,6,15,7
5120 DATA 24,0000000000000000,25,7EA5C38181C3A57E,26,7E8199A5A599837E,27,7E8181999981817E,28,183C72623C187EC3
5130 DATA 152,000000000040A040,153,00080CFEFE0C0800,154,181818187E3C1800
5140 DATA 248,03070D193F61C181,249,010141115C545151
5150 DATA 250,E02008E8282E2AEA,251,00000000619292F9,252,00001010D41814D2
5160 DATA 160,"EFBDF6BF55EFBADF",161,"181C342E3A6E7BDD",162,"80C0C0F8BCF4AEFB",163,"01030207051E7BD7",144,"00181A5A5E781818"
5170 DATA 120,"183C42423C187EC3000000000000000000000000000000000000000000000000"
5180 DATA 124,"0000000000000000FF81A39589C1213F00000000000000000000000000000000"
5190 DATA 104,"00071F3870604E44446030180C7C7C0000E0F81C0E06722272060C18303E3E00"
5200 DATA 108,"FFF9F0E0E0F0F9E0CFFFFF008F8989EFF0F0F07070F0F07030F0F30343434073"
5210 DATA 128,"000000381E87818080000006030301000000000E3C7141010100003060E0C08"
5220 DATA 136,"00000000000E1F1C1F0E00000004047C0000000000387C707C3800000001011F"
5230 DATA 68,"1F1010106747472311102020300C0300FF0101011D1D1DB9F1E14101010101FF"
5240 DATA 140,"0000000000000000381000281000000000000000000000000000000000000000"
5250 DATA 132,"7EA5C38181C3A57E000000000000000000000000000000000000000000000000"
5260 DATA 112,"EE88EE888E008B8AABDA8B2053344473EE84E424E400B722BA0ABA002EA2A424"
5270 DATA 72,"FF81A39589C1213F"
5280 DATA 40,001C182A49FF0C1A,41,225D9808493E0C1A,42,77001C180A7E0C1A,43,41221C18493E0C1A,44,38301038D6929228,45,BA9A925438101028
5290 DATA 33,183C72623C187EC3,34,183C5A723C187EC3,35,183C4E5A3C187EC3,36,183C464E3C187EC3,37,183C62463C187EC3,38,3810002810000000
5300 DATA 39,183C42423C187EC3
